--- title: "03-Cloudflare Tunnel" created: 2026-01-09 tags: - 博客 --- # Cloudflare Tunnel ## **概述** Cloudflare Tunnel(原 Argo Tunnel)是一种反向隧道服务,可让无公网 IP 的服务器安全地暴露服务到公网。 **核心价值:** 让服务器"隐身"于 Cloudflare 保护之下,同时可被全球访问。 --- ## **核心原理:反向连接** 关键在于**改变连接方向**——不是外网连进来,而是内网主动连出去。 ### **传统方式 vs Cloudflare Tunnel** text ``` ❌ 传统方式(被动等待): 用户 ──→ 公网IP:端口 ──→ 服务器 问题:无公网IP / 端口被封 = 无法访问 ✅ Cloudflare Tunnel(主动出击): 服务器 ──主动连接──→ Cloudflare 边缘节点 ↑ 用户 ──访问域名──→ Cloudflare ──通过隧道──→ 服务器 ``` ![[7-Blog/网络与自托管/EasyTier+Cloudflare Tunnel 优雅20r成本个人自托管方案/assets/diagram-1767016433745-f3b07462.png]] ### **工作流程** ``` 1. 服务器运行 cloudflared,主动向外连接 Cloudflare 2. 建立长期加密隧道(出站连接,防火墙通常放行) 3. 用户访问域名 → Cloudflare 接收请求 4. Cloudflare 通过隧道将请求"塞回"服务器 5. 服务器响应,原路返回 ``` ![[7-Blog/网络与自托管/EasyTier+Cloudflare Tunnel 优雅20r成本个人自托管方案/assets/image-8a2366fa.png]] > *💡 **本质:** 内网主动连接 Cloudflare,Cloudflare 顺着这条路传递流量* --- ## **核心优势** | **特性** | **说明** | | --- | --- | | **无需公网 IP** | 内网 IP(10.x.x.x)、运营商大内网(100.64.x.x)均可用 | | **无视端口限制** | 无需开放 80/443,只需出站网络通畅 | | **隐藏真实 IP** | 服务器在互联网上"隐形",无法被扫描攻击 | | **极致安全** | 可设置防火墙"拒绝所有入站",仅保留出站 | | **自带 HTTPS** | Cloudflare 自动提供 SSL 证书 | --- ## **适用场景** **NAT VPS 绝配:** - 端口受限(无 80/443) - 无独立公网 IP - 需要对外提供 Web 服务 --- ## **两种用法** ### **用法 A:暴露特定服务(最常用)** 将内部服务映射到公网域名: ```yaml # 配置示例 tunnel: my-tunnel ingress: - hostname: bt.example.com service: http://localhost:8888 # 宝塔面板 - hostname: www.example.com service: http://localhost:80 # 网站 - service: http_status:404 # 兜底规则 ``` **效果:** 用户访问域名直达服务,无需输入端口号 ### **用法 B:暴露整个私有网络** 通过 WARP 客户端接入内网网段: ``` 配置:cloudflared 宣告私有网段(如 10.1.1.0/24) 客户端:安装 Cloudflare WARP 效果:手机/笔记本可直接访问该网段所有设备 ``` | **对比** | **用法 A** | **用法 B** | | --- | --- | --- | | 目标 | 暴露特定服务 | 暴露整个网段 | | 客户端要求 | 无(浏览器即可) | 需安装 WARP | | 适用场景 | 网站、API | 远程办公、运维 | --- ## **快速部署** ``` # 1. 安装 cloudflared curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared chmod +x cloudflared # 2. 登录认证 ./cloudflared tunnel login # 3. 创建隧道 ./cloudflared tunnel create my-tunnel # 4. 配置 DNS(将域名指向隧道) ./cloudflared tunnel route dns my-tunnel www.example.com # 5. 运行隧道 ./cloudflared tunnel run my-tunnel ``` --- ## **工具组合方案** 针对 NAT VPS 的完整解决方案: ``` ┌─────────────────────────────────────────────────────┐ │ NAT VPS │ ├─────────────────────────────────────────────────────┤ │ EasyTier → 私密组网(自己管理/SSH/传文件)│ │ Cloudflare Tunnel → 公网暴露(网站/应用对外服务) │ └─────────────────────────────────────────────────────┘ ``` | **工具** | **职责** | **解决的问题** | | --- | --- | --- | | **EasyTier** | 私密互联 | 设备间直连、内部管理 | | **Cloudflare Tunnel** | 公网暴露 | 无公网 IP、端口受限 | > *✅ 两者结合,完全克服 NAT VPS「无独立公网 IP + 端口稀缺」的限制* --- ## **注意事项** | **事项** | **说明** | | --- | --- | | **依赖 Cloudflare** | 服务可用性取决于 CF,国内访问速度可能受限 | | **免费套餐限制** | 部分高级功能需付费(基础隧道功能免费) | | **调试复杂度** | 出问题时排查链路较长 | --- ## **总结** | **传统方案** | **Cloudflare Tunnel** | | --- | --- | | 需要公网 IP | ❌ 不需要 | | 需要开放端口 | ❌ 不需要 | | 服务器暴露在公网 | ✅ 完全隐藏 | | 需要自己配置 HTTPS | ✅ 自动提供 | | 防 DDoS | ❌ 自己扛 | > *🎯 **一句话:** 让没有公网 IP 的服务器,安全地拥有全球可达的域名访问能力。*